/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Control;

import DAO.UsuarioDAO;
import Model.Privilegio;
import Model.Usuario;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Maury
 */
public class editarUsuario extends Processor {

    @Override
    public void execute() throws ServletException, IOException {
        PrintWriter out = getResponse().getWriter();
        getResponse().setContentType("text/html;charset=UTF-8");
        try{
            String nome = (String) getRequest().getParameter("nome");
            String login = (String) getRequest().getParameter("login");
            String senha = (String) getRequest().getParameter("senha");
            String n = (String) getRequest().getParameter("nascimento");
            String email = (String) getRequest().getParameter("email");
            
            if(nome == null || login == null || senha == null || n == null || email == null){
                throw new ServletException();
            }            
            
            if(nome.equals("") || login.equals("") || senha.equals("") || email.equals("")){
                String erro = "Dados Inválidos!";
                getRequest().setAttribute("erro", erro);
                RequestDispatcher rd = getRequest().getRequestDispatcher("editarUsuario.jsp");
                rd.forward(getRequest(), getResponse());
            }
            
            Date nascimento = null;
            
            if(!n.equals("")){
                DateFormat df = DateFormat.getDateInstance();
                nascimento = df.parse(n);
            }
            
            HttpSession session = getRequest().getSession(false);
            Usuario user = (Usuario) session.getAttribute("usuario");
            
            Privilegio privilegio = user.getPrivilegio();
            Usuario usuarioNew = new Usuario();
            usuarioNew.setNome(nome);
            usuarioNew.setPrivilegio(privilegio);
            usuarioNew.setNascimento(nascimento);
            usuarioNew.setSenha(senha);
            usuarioNew.setLogin(login);
            usuarioNew.setEmail(email);
            usuarioNew.setBloquear(false);
            
            boolean sucesso = UsuarioDAO.updateUsuario(usuarioNew,user.getLogin());
            RequestDispatcher rd;
            if(sucesso){
                session = getRequest().getSession(true);
                session.setAttribute("usuario", usuarioNew);
                privilegio = usuarioNew.getPrivilegio();
                
                String mensagem = "Usuário editado!!!";
                getRequest().setAttribute("mensagem", mensagem);
                if(privilegio.getId() == 1){
                    rd = getRequest().getRequestDispatcher("menuAdministrador.jsp");
                    rd.forward(getRequest(), getResponse());
                }
                else if(privilegio.getId() == 2){
                    rd = getRequest().getRequestDispatcher("menuFuncionario.jsp");
                    rd.forward(getRequest(), getResponse());
                }
                else if(privilegio.getId() == 3){
                    rd = getRequest().getRequestDispatcher("menuPorteiro.jsp");
                    rd.forward(getRequest(), getResponse());
                }
                else if(privilegio.getId() == 4){
                    rd = getRequest().getRequestDispatcher("menuAluno.jsp");
                    rd.forward(getRequest(), getResponse());
                }
            }
            else if(!sucesso){
                String erro = "Usuário já existe!";
                getRequest().setAttribute("erro", erro);
                rd = getRequest().getRequestDispatcher("editarUsuario.jsp");
                rd.forward(getRequest(), getResponse());
            }
        }
        catch(SQLException e){
            throw new ServletException(e); 
        }
        catch(ClassNotFoundException e){
            throw new ServletException(e);
        }
        catch(ParseException e){
            String erro = "Dados Inválidos!";
            getRequest().setAttribute("erro", erro);
            RequestDispatcher rd = getRequest().getRequestDispatcher("editarUsuario.jsp");
            rd.forward(getRequest(), getResponse());
        }
    }
    
}
